package com.xiaolin.proxy;

/**
 * @ClassName TestStaticProxy
 * @Description TODO
 * @Detail 测试静态代理
 *              步骤：
 *                  1、新建一个接口
 *                  2、新建一个目标类实现接口，并重写抽象方法
 *                  3、创建一个代理类实现接口，并重写抽象方法
 *              总结：
 *                  1、代理类需要组合目标类，然后在代理类调用目标类的方法，从而实现代理
 * @Author MyPC
 * @Date 2020/9/27
 * @Version 1.0
 */
public class TestStaticProxy {
    public static void main(String[] args) {
        Owner owner=new Owner();
        Agency agency=new Agency(owner);
        agency.sell();
    }
}

//楼盘交给中介来代理
interface Houses{
    void sell();
}

/**
 * 代理对象
 */
class Agency implements Houses{
    //楼盘所有人
    private Owner owner;

    Agency(Owner owner){
        this.owner=owner;
    }

    @Override
    public void sell() {
        System.out.println("向客户谈好卖楼事宜");
        owner.sell();
        System.out.println("处理之后相关事宜");
    }
}

/**
 * 楼盘所有人
 */
class Owner implements Houses{

    @Override
    public void sell() {
        System.out.println("卖楼");
    }
}
